package com.example.demo.TextTest;

import com.alibaba.fastjson.JSONObject;
import com.example.demo.DateTest.util.DateUtil;
import com.example.demo.TextTest.entity.SimulaEntity;
import com.sun.org.apache.bcel.internal.generic.NEW;
import org.apache.commons.lang3.ObjectUtils;

import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.*;
import java.util.stream.Collectors;

public class ListTest {
    public static void main(String[] args) {
        /** ----------------------------*/
//        String sList = "17417550491812021,17417550491812022,17417550491812023,17417550491812024,17417550491812025,17417550491812026,17417550491812027,17417550491812028,17417550491812029,17417550491812030,17417550491812031,17417550491812032,17417550491812033,17417550491812034,17417550491812035,17417550491812036,17417550491812037,17417550491812038,17417550491812039,17417550491812041,17417550491812042,17417550491812043,17417550491812044,17417550491812045,17417550491812046,17417550491812047,17417550491812048,17417550491812049,17417550491812050,17417550491812051,17417550491812052,17417550491812053,17417550491812054,17417550491812055,17417550491812056,17417550491812057,17417550491812058,17417550491812059,17417550491812060,17417550491812061,17417550491812062,17417550491812063,17417550491812064,17417550491812065,17417550491812066,17417550491812067,17417550491812068,17417550491812069,17417550491812070,17417550491812071,17417550491812072,17417550491812073,17417550491812074,17417550491812075,17417550491812076,17417550491812077,17417550491812078,17417550491812079,17417550491812080,17417550491812081,17417550491812082";

//        List<String> asList = Arrays.asList(sList.split(","));
//
//        asList.forEach(x->{
//            String createBy = null;
//            String updateBy = null;
//            String role = null;
//            for (int i = 1; i <= 2; i++) {
//                String a = "INSERT INTO `expert_service_door_evaluate` " +
//                        "(`order_id`, `evaluate_str`, `evaluate_star`, `tenant_id`, `create_by`, `update_by`, `role`) " +
//                        "VALUES" +
//                        "({0}, '可用', 5, 11, {1}, {2}, {3});";
//                switch (i){
//                    case 1:
//                        createBy = "32385";
//                        updateBy = "32385";
//                        role = "1";
//                        break;
//                    case 2:
//                        createBy = "32442";
//                        updateBy = "32442";
//                        role = "2";
//                        break;
//                    default:
//                        System.out.println("异常!");
//                        break;
//
//                }
//                // 使用replace方法替换占位符
//                String replacedString = a
//                        .replace("{0}", x)
//                        .replace("{1}", createBy)
//                        .replace("{2}", updateBy)
//                        .replace("{3}", role);
//                System.out.println(replacedString);
//            }
//        });

//        String a = "617785253605376,617808357052416,617785253605376,617808393613312,617808357052416,617808393613312";
//        List<String> list = Arrays.asList(a.split(","));
//        String collect = list.stream().distinct().collect(Collectors.joining(","));
//        System.out.println(collect);

        /** ----------------------------*/

//        List<TextBean> list = new ArrayList<>();
//        TextBean textBean1 = new TextBean();
//        textBean1.setDateStr("2023-11-28");
//        textBean1.setVal(2.0);
//        textBean1.setCurrentValue(BigDecimal.ZERO);
//        list.add(textBean1);
//
//        TextBean textBean2 = new TextBean();
//        textBean2.setDateStr("2023-11-27");
//        textBean2.setVal(2.0);
//        textBean2.setCurrentValue(BigDecimal.ZERO);
//        list.add(textBean2);
//
//        TextBean textBean3 = new TextBean();
//        textBean3.setDateStr("2023-11-26");
//        textBean3.setVal(2.0);
//        textBean3.setCurrentValue(BigDecimal.ZERO);
//        list.add(textBean3);
//
//        TextBean textBean4 = new TextBean();
//        textBean4.setDateStr("2023-11-25");
//        textBean4.setVal(2.0);
//        textBean4.setCurrentValue(BigDecimal.ZERO);
//        list.add(textBean4);
//
//        TextBean textBean5 = new TextBean();
//        textBean5.setDateStr("2023-11-24");
//        textBean5.setVal(0.0);
//        textBean5.setCurrentValue(BigDecimal.ZERO);
//        list.add(textBean5);
//
//        TextBean textBean6 = new TextBean();
//        textBean6.setDateStr("2023-11-23");
//        textBean6.setVal(2.0);
//        textBean6.setCurrentValue(BigDecimal.ZERO);
//        list.add(textBean6);
//
//        TextBean textBean7 = new TextBean();
//        textBean7.setDateStr("2023-11-22");
//        textBean7.setVal(2.0);
//        textBean7.setCurrentValue(BigDecimal.ZERO);
//        list.add(textBean7);
//
//        List<TextBean> sortedList = list.stream()
//                .sorted(Comparator.comparing(TextBean::getDateStr).reversed())
//                .collect(Collectors.toList());
//        int count = 0;
//        for (TextBean textBean : sortedList) {
//            if (textBean.getVal() > 0) {
//                count++;
//            }else {
//                break;
//            }
//        }
//
//        System.out.println(count);

        /** ----------------------------*/

//        List<Object> list1 = new ArrayList<>();
//        list1.add("-");
//        list1.add("a");
//        List<Object> list2 = new ArrayList<>();
//        list2.add("-");
//        list2.add("b");
//        List<Object> list3 = new ArrayList<>();
//        list3.add(2.66);
//        list3.add("c");
//        List<Object> list4 = new ArrayList<>();
//        list4.add("-");
//        list4.add("d");
//        List<Object> list5 = new ArrayList<>();
//        list5.add(2.75);
//        list5.add("e");
//        List<Object> list6 = new ArrayList<>();
//        list6.add("-");
//        list6.add("f");
//
//        List<List> priceList = Arrays.asList(list1,list2,list3,list4,list5,list6);
//        System.out.println(priceList);
//        // 先判断首位参数是否异常
//        BigDecimal upNum = null;
//        outer: for (List price : priceList) {
//            String num = price.get(0).toString();
//            if ("-".equals(num)){
//                if (ObjectUtils.isEmpty(upNum)){
//                    for (List lowPrice : priceList) {
//                        String s = lowPrice.get(0).toString();
//                        if (!"-".equals(s)){
//                            upNum = new BigDecimal(s);
//                            price.set(0,upNum);
//                            continue outer;
//                        }
//                    }
//                }else {
//                    price.set(0,upNum);
//                }
//            }else {
//                upNum = new BigDecimal(num);
//            }
//        }
//        System.out.println(priceList);

        /** ----------------------------*/

//        JSONObject jsonObject = new JSONObject();
//        jsonObject.put("plantingAreaAmend",000);
//        jsonObject.put("projectedCostAmend",123);
//        jsonObject.put("plantingCostAmend",233);
//        jsonObject.put("costMuAmend",333);
//        for (Map.Entry<String, Object> stringObjectEntry : jsonObject.entrySet()) {
//            System.out.println(stringObjectEntry.getKey());
//            System.out.println(stringObjectEntry.getValue());
//        }
        /** ----------------------------*/
//        int[][] c = new int[2][2];
//
//        System.out.println(Arrays.deepToString(c));
        /** ----------------------------*/
//        int year = DateUtil.getYear();
//        List<Integer> yearList = new ArrayList<>();
//        yearList.add(year);
//        for (int i = 0; i < 4; i++) {
//            year -= 1;
//            yearList.add(year);
//        }
//        System.out.println(yearList);
//
//        int indexYear = 2022;
//        int i = 0;
//         if (yearList.contains(indexYear)){
//             i = yearList.indexOf(indexYear);
//         }
//        System.out.println(i);
        /** ----------------------------*/
//        List<String> A = Arrays.asList("2023-01-01", "2023-01-02");
//        List<String> B = Arrays.asList("2023-01-02", "2023-01-11");
//        List<String> C = Arrays.asList("2023-01-05", "2023-01-08");
//        List<String> D = Arrays.asList("2023-01-06", "2023-01-12");
//        List<String> E = Arrays.asList("2023-01-07", "2023-01-16");
//        List<String> F = Arrays.asList("2023-01-10", "2023-01-13");
//        List<String> G = Arrays.asList("2023-01-15", "2023-01-17");
//        List<List<String>> lists = Arrays.asList(A, B, C, D, E, F, G);
//
//        String startDate = "2023-01-04";
//        String endDate = "2023-01-14";
//        for (List<String> list : lists) {
//            String start = list.get(0);
//            String end = list.get(1);
//            System.out.println(checkOverlap(start, end, startDate, endDate));
//        }
        /** ----------------------------*/
//        List<Integer> integers = Arrays.asList(1, 3, 4, 5, 2, 6, 8, 10, 7, 9,11);
//        List<Integer> collect = integers.stream().sorted().collect(Collectors.toList());
//        System.out.println(collect);
//        int i = collect.size() - 10;
//        if (i > 0){
//            List<Integer> integers1 = collect.subList(0, i);
//            System.out.println(integers1);
/** ----------------------------*/
//        for (int i = 0; i < 21; i++) {
//            String s = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
//            System.out.println(s);
//        }
/** ----------------------------*/

//        // 需开启设备
//        Set<String> openMaster = new HashSet<>();
//        openMaster.add("1");
//        openMaster.add("2");
//        openMaster.add("3");
//        openMaster.add("4");
//        openMaster.add("5");
//        openMaster.add("6");
//        System.out.println(openMaster);
//        // 需关闭设备
//        Set<String> closeMaster = new HashSet<>();
//        closeMaster.add("2");
//        closeMaster.add("4");
//        closeMaster.add("6");
//        System.out.println(closeMaster);
//        openMaster.removeAll(closeMaster);
//        System.out.println(openMaster);
/** ----------------------------*/

//        List<SimulaEntity> simulaEntities = Arrays.asList(
//                new SimulaEntity(1L, 11L, 111L, 1111L),
//                new SimulaEntity(2L, 22L, 222L, 2222L),
//                new SimulaEntity(3L, 33L, 333L, 3333L)
//        );
//
//        List<SimulaEntity> listTwo = simulaEntities.stream().map(SimulaEntity::clone).collect(Collectors.toList());
//
//        for (SimulaEntity simulaEntity : listTwo) {
//            simulaEntity.setId(simulaEntity.getId() + 5L);
//        }
//
//        System.out.println(listTwo);
//        System.out.println(simulaEntities);

        /** ----------------------------*/

        List<Map<String, Object>> list3 = new ArrayList<>();
        Map<String, Object> a = new HashMap<>();
        a.put("unit", "ml");
        a.put("convert", 1.0);
        list3.add(a);
        Map<String, Object> b = new HashMap<>();
        b.put("unit", "l");
        b.put("convert", 1000.0);
        list3.add(b);
        Map<String, Object> c = new HashMap<>();
        c.put("unit", "kg");
        c.put("convert", 1.0);
        list3.add(c);
        Map<String, Object> d = new HashMap<>();
        d.put("unit", "g");
        d.put("convert", 0.001);
        list3.add(d);
        Map<String, Object> e = new HashMap<>();
        e.put("unit", "t");
        e.put("convert", 1000.0);
        list3.add(e);

        List<String> list1 = Arrays.asList("ml", "l", "kg", "g", "t");
        List<String> list2 = Arrays.asList("（250ml*2）*4", "400ml", "400ml*5", "1.5l+450ml","500g","1.3kg+300g");

        for (String item : list2) {
            int minIndex = Integer.MAX_VALUE;
            String firstUnit = null;
            double firstValue = 0;

            for (String unit : list1) {
                int index = item.indexOf(unit);
                if (index != -1 && index < minIndex) {
                    minIndex = index;
                    firstUnit = unit;
                    String valueStr = item.substring(0, index).replaceAll("[^0-9.]", "");
                    if (!valueStr.isEmpty()) {
                        firstValue = Double.parseDouble(valueStr);
                    }
                }
            }

            if (firstUnit != null) {
                System.out.println("unit: " + firstUnit + ", 数值: " + firstValue);
            } else {
                System.out.println("项: " + item + ", 未找到有效单位");
            }
        }
    }

//    public static boolean checkOverlap(String start, String end, String startDate, String endDate) {
//        LocalDate startA = LocalDate.parse(start);
//        LocalDate endA = LocalDate.parse(end);
//        LocalDate startB = LocalDate.parse(startDate);
//        LocalDate endB = LocalDate.parse(endDate);
//        return (endA.isBefore(startB) || startA.isAfter(endB));
//    }

}
